package org.web2024.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;

import java.util.Base64;
import java.util.Date;
import java.util.Map;

public class jwtUtil {
    private static String originalSignkey = "aB3!dE5%fH7*jK9(lN1)pQ3+sW5=vX7/zC9*F2&D4%H6*J8&L0*P2(S4)V6*Z8*X0*";
    private static String signkey = Base64.getEncoder().encodeToString(originalSignkey.getBytes());
    private static Long expire=60*60*1000L;
    public static String getToken(Map<String,Object>claims){
       // 使用Jwts.builder()创建一个JWT构建器
       String jwt= Jwts.builder()
               // 使用HS256算法对JWT进行签名，保障安全性
               .signWith(io.jsonwebtoken.SignatureAlgorithm.HS256,signkey)
               // 设置JWT的声明（claims），包含具体信息
               .claims(claims)
               // 设置JWT的过期时间，当前时间加上设定的过期时间
               .expiration(new Date(System.currentTimeMillis()+expire))
               // 将所有设置压缩为一个字符串，形成最终的JWT
               .compact();
       // 返回构建好的JWT字符串
       return jwt;
    }

    public static Claims checkJWT(String token){
        Claims claims=Jwts.parser()
                .setSigningKey(signkey)
                .build()
                .parseClaimsJws(token)
                .getBody();
        return claims;
    }
}

